﻿using System.Data;
using System;
using Negocio.View.Base;
using System.Runtime.CompilerServices;
using Negocio.Generico;

namespace Negocio.View
{

    /// <summary>
    /// View de las personas
    /// </summary>
    public class RenglonView : ViewBase
    {
        #region Singleton

        private static RenglonView instance = null;

        private RenglonView()
        {
            //Vacio
        }

        [MethodImpl(MethodImplOptions.Synchronized)]
        public static RenglonView GetInstance()
        {
            if (instance == null)
            {
                instance = new RenglonView();
            }
            return instance;
        }

        #endregion

        #region Constantes

        /// <summary>
        /// Codigo del renglon
        /// </summary>
        private const string CODIGORENGLON = "CODIGORENGLON";

        /// <summary>
        /// nombre de la persona
        /// </summary>
        private const string NOMBRE = "NOMBRE";

        /// <summary>
        /// Descripcion
        /// </summary>
        private const string DESCRIPCION = "DESCRIPCION";

        /// <summary>
        /// Codigo de la asignatura
        /// </summary>
        private const string CODIGOASIGNATURA = "CODIGOASIGNATURA";

        /// <summary>
        /// Fecha de creacion
        /// </summary>
        private const string FECHACREACION = "FECHACREACION";

        /// <summary>
        /// Fecha de requerimiento
        /// </summary>
        private const string FECHAREQUERIMIENTO = "FECHAREQUERIMIENTO";

        /// <summary>
        /// Codigo del tipo de renglon
        /// </summary>
        private const string CODIGOTIPORENGLON = "CODIGOTIPORENGLON";

        /// <summary>
        /// Publico
        /// </summary>
        private const string PUBLICO = "PUBLICO";


        #endregion

        #region View

        /// <summary>
        /// Devuelve un listastado de personas sin ningun parametro de filtro
        /// </summary>
        /// <returns>Devuelve un dataview de renglones</returns>
        public DataView GetViewRenglon()
        {
            return this.GetViewRenglon(new RenglonDTO());
        }

        /// <summary>
        /// Muestra un DataView de renglones
        /// </summary>
        /// <returns>DataView G todos los datos</returns>
        public DataView GetViewRenglon(RenglonDTO filtro)
        {
            try
            {
                DataView dv = new DataView();
                DataTable dt = new DataTable("Renglon");

             

                dt.Columns.Add(RenglonView.CODIGORENGLON, this.GetTypeInt32);
                dt.Columns.Add(RenglonView.NOMBRE, this.GetTypeString);
                dt.Columns.Add(RenglonView.DESCRIPCION, this.GetTypeString);
                dt.Columns.Add(RenglonView.CODIGOASIGNATURA, this.GetTypeInt32);
                dt.Columns.Add(RenglonView.FECHACREACION, this.GetTypeSqlDateTime);
                dt.Columns.Add(RenglonView.FECHAREQUERIMIENTO, this.GetTypeSqlDateTime);
                dt.Columns.Add(RenglonView.CODIGOTIPORENGLON, this.GetTypeInt32);
                dt.Columns.Add(RenglonView.PUBLICO, this.GetTypeBoolean);
                using (Negocio.Generico.ContratoGenericoClient servicio = new Negocio.Generico.ContratoGenericoClient())
                {

                    foreach (RenglonDTO bean in servicio.Get(filtro))
                    {
                        DataRow fila = dt.NewRow();

                        fila[RenglonView.CODIGORENGLON] = bean.CoRenglon;
                        fila[RenglonView.NOMBRE] = bean.Nombre;
                        fila[RenglonView.DESCRIPCION] = bean.Descripcion;
                        fila[RenglonView.CODIGOASIGNATURA] = bean.CoAsignatura;
                        fila[RenglonView.FECHACREACION] = bean.FchCreacion;
                        fila[RenglonView.FECHAREQUERIMIENTO] = bean.FchRequerimiento;
                        fila[RenglonView.CODIGOTIPORENGLON] = bean.CoTipoRenglon;
                        fila[RenglonView.PUBLICO] = bean.Publico;

                        dt.Rows.Add(fila);
                    }
                }
                return dt.DefaultView;
            }
            catch (Exception ex)
            {
                throw new ViewException(ex);
            }
        }

        #endregion
    }
}